﻿using System;
using System.Net;

namespace MangoCannon.Framework.Base
{
    interface IAdvNet
    {
        /// <summary>
        /// 以别名虚拟连接到客户（前提是客户端实际已经连接上）
        /// </summary>
        /// <param name="alias"></param>
        /// <returns>返回“真”即链接上了，返回“假”则表示客户实际上客户端不在线</returns>
        bool connectClientByAlias(string alias);
        /// <summary>
        /// 虚拟地断开与客户的链接（框架与客户的连接不会断开，主要用于暂停接收某客户的信息）
        /// </summary>
        /// <param name="alias"></param>
        void disconnectClientByAlias(string alias);
        /// <summary>
        /// 计划什么时候链接到某IP的UP主助手
        /// </summary>
        /// <param name="ip"></param>
        /// <param name="when"></param>
        void connectClientByIP(IPAddress ip,DateTime when);
        /// <summary>
        /// 虚拟断开所有与客户的连接（框架与客户的连接不会断开）
        /// </summary>
        void disconnectClientAll();
        /// <summary>
        /// 发送信息给客户端
        /// </summary>
        /// <param name="jsonText"></param>
        void sendMsg(string jsonText);
        /// <summary>
        /// 客户链接被中断
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        EventHandler ClientDisconnected(object obj, EventArgs e);

    }
}
